package v1

import (
	"github.com/gin-gonic/gin"
	"goblog/model"
	"goblog/utils/errmsg"
	"net/http"
)

func UpLoad(c *gin.Context) {
	// 尝试从表单中获取文件
	file, fileHeader, err := c.Request.FormFile("file")
	if err != nil {
		// 如果有错误，返回错误信息
		c.JSON(http.StatusBadRequest, gin.H{
			"status":  http.StatusBadRequest,
			"message": err.Error(),
			"url":     "",
		})
		return
	}
	defer file.Close() // 确保在函数结束时关闭文件

	if fileHeader == nil {
		// 如果fileHeader是nil，返回错误信息
		c.JSON(http.StatusBadRequest, gin.H{
			"status":  http.StatusBadRequest,
			"message": "No file was provided in the request.",
			"url":     "",
		})
		return
	}

	fileSize := fileHeader.Size // 现在可以安全地获取文件大小

	url, code := model.UpLoadFile(file, fileSize)
	// 根据code的值构建响应体
	response := gin.H{
		"status":  code,
		"message": errmsg.GetErrMsg(code),
	}
	if code == http.StatusOK {
		// 如果上传成功，添加文件URL到响应体
		response["url"] = url
	}

	// 返回响应
	c.JSON(code, response)
}
